Samples independent chains concurrently using OpenMP. Initialize each target independently, with no shared mutable state in distributions, models, proposals, or sampler callbacks. The compiler runtime must provide thread-safe RANDOM_NUMBER (as GNU Fortran does). Random streams and reproducibility depend on the compiler runtime and thread scheduling; no per-chain seed guarantee is provided.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mcmc_sampler), | intent(inout) | :: | samplers(:) |
One sampler per chain; existing samples are retained as in sample. |
||
| real(kind=real64), | intent(in) | :: | xdata(:) |
Shared, read-only observations. |
||
| real(kind=real64), | intent(in) | :: | ydata(:) |
Shared, read-only observations. |
||
| class(mcmc_proposal), | intent(inout) | :: | proposals(:) |
One independently configured proposal per chain. |
||
| class(mcmc_target), | intent(inout) | :: | targets(:) |
One independently initialized target per chain. |
||
| integer(kind=int32), | intent(in), | optional | :: | niter |
Iterations per chain; defaults to 10,000. |